package top.saiyin.list;

import java.util.Arrays;

/**
 * @Program: leetcode
 * @Description: Z 字形变换
 * @Author: sy
 * @Create: 2020-08-27
 **/
public class ZigZagConversion {

    public static void main(String[] args) {
        String s = "LEETCODEISHIRING";
        int numRows = 3;
        System.out.println(convert(s, numRows));
    }

    public static String convert(String s, int numRows) {
        if (numRows == 1) {
            return s;
        }
        String[] arr = new String[numRows];
        // 将指定的对象引用分配给指定对象数组中的每个元素。
        Arrays.fill(arr, "");
        // 将字符串转换为字符串数组
        char[] chars = s.toCharArray();
        // 得到字符串数组的长度
        int len = chars.length;
        // 根据规律每 2n-2 即为一个周期
        int period = numRows * 2 - 2;
        for (int i = 0; i < len; i++) {

            int mod = i % period;
            if (mod < numRows) {
                arr[mod] += chars[i];
            } else {
                arr[period - mod] += String.valueOf(chars[i]);
            }
        }
        StringBuilder res = new StringBuilder();
        for (String ch : arr) {
            res.append(ch);
        }
        return res.toString();
    }
}
